#include <stdint.h>
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h> 
#include <stdlib.h>
#include <assert.h>
#include "app_platform/cntl_info.h"
#include "organizationao.h"


using namespace erp::organization::ao;

CPP_SELF_DEFINE_START
/**
*  请在这里增加自定义的成员变量和函数及其他内容，否则无法合并代码
**/

CPP_SELF_DEFINE_END

/**
 *构建函数
 */
COrganizationAo::COrganizationAo(enum DeployMethod method)
{
}

/**
 *析构函数
 */
COrganizationAo::~COrganizationAo()
{
}


/**
 *每一次服务请求时，container都会调用此方法来清空数据
 */
void  COrganizationAo::Reset()
{
}


int  COrganizationAo::Initialize(IUserDefineCntl* pCntl)
{
	int iRet = 0;
	return iRet;
}


/**
 *
 * 添加/修改分支机构；传入分支机构ID不为0时则进行修改，反之则进行添加；不能进行逻辑删除
 *
 *@param String machineKey: 机器码，必填   [in]				
 *@param String source: 调用来源，必填   [in]				
 *@param uint32_t sceneId: 场景ID，必填   [in]				
 *@param uint32_t option: 功能选项，扩展选填   [in]				
 *@param BranchPo branch: 分支机构PO，必填   [in]				
 *@param String inReserve: 请求保留字   [in]				
 *@param String errmsg: 错误信息  	[out]	
 *@param BranchPo branchBack: 返回新增或修改后的分支机构PO，必填  	[out]	
 *@param String outReserve: 返回保留字   	[out]	
 *
 *@return  uint32_t : 0(成功) 其它失败
 *
 */
uint32_t COrganizationAo::ModifyBranch(
				const CCntlInfo& rCntlInfo,
				const std::string& strMachineKey,
				const std::string& strSource,
				uint32_t dwSceneId,
				uint32_t dwOption,
				const erp::organization::po::CBranchPo& oBranch,
				const std::string& strInReserve,
				std::string& strErrmsg,
				erp::organization::po::CBranchPo& oBranchBack,
				std::string& strOutReserve
	)
{
	uint32_t dwRet = 0;
	//TODO:业务代码
	
	return dwRet;
}

/**
 *
 * 删除分支机构（逻辑）
 *
 *@param String machineKey: 机器码，必填   [in]				
 *@param String source: 调用来源，必填   [in]				
 *@param uint32_t sceneId: 场景ID，必填   [in]				
 *@param uint32_t option: 功能选项，扩展选填   [in]				
 *@param Set branchId: 需删除的分支机构的ID，必填   [in]				
 *@param String inReserve: 请求保留字   [in]				
 *@param String errmsg: 错误信息  	[out]	
 *@param Map errorCode: 删除失败的错误码 	[out]	
 *@param Map errorMsg: 删除失败的错误信息 	[out]	
 *@param String outReserve: 返回保留字   	[out]	
 *
 *@return  uint32_t : 0(成功) 其它失败
 *
 */
uint32_t COrganizationAo::DeleteBranch(
				const CCntlInfo& rCntlInfo,
				const std::string& strMachineKey,
				const std::string& strSource,
				uint32_t dwSceneId,
				uint32_t dwOption,
				const std::set<uint64_t >& setBranchId,
				const std::string& strInReserve,
				std::string& strErrmsg,
				std::map<uint64_t,uint32_t >& mapErrorCode,
				std::map<uint64_t,std::string >& mapErrorMsg,
				std::string& strOutReserve
	)
{
	uint32_t dwRet = 0;
	//TODO:业务代码
	
	return dwRet;
}

/**
 *
 * 根据分支机构ID批量获取分支机构信息
 *
 *@param String machineKey: 机器码，必填   [in]				
 *@param String source: 调用来源，必填   [in]				
 *@param uint32_t sceneId: 场景ID，必填   [in]				
 *@param uint32_t option: 功能选项，扩展选填   [in]				
 *@param Set branchId: 需获取的分支机构的ID，必填   [in]				
 *@param String inReserve: 请求保留字   [in]				
 *@param String errmsg: 错误信息  	[out]	
 *@param Map errorCode: 获取失败的错误码 	[out]	
 *@param Map errorMsg: 获取失败的错误信息 	[out]	
 *@param Map branch: 获取成功的分支机构信息 	[out]	
 *@param String outReserve: 返回保留字   	[out]	
 *
 *@return  uint32_t : 0(成功) 其它失败
 *
 */
uint32_t COrganizationAo::GetBranch(
				const CCntlInfo& rCntlInfo,
				const std::string& strMachineKey,
				const std::string& strSource,
				uint32_t dwSceneId,
				uint32_t dwOption,
				const std::set<uint64_t >& setBranchId,
				const std::string& strInReserve,
				std::string& strErrmsg,
				std::map<uint64_t,uint32_t >& mapErrorCode,
				std::map<uint64_t,std::string >& mapErrorMsg,
				std::map<uint64_t,erp::organization::po::CBranchPo >& mapBranch,
				std::string& strOutReserve
	)
{
	uint32_t dwRet = 0;
	//TODO:业务代码
	
	return dwRet;
}

/**
 *
 * 根据过滤条件查询支机构列表信息
 *
 *@param String machineKey: 机器码，必填   [in]				
 *@param String source: 调用来源，必填   [in]				
 *@param uint32_t sceneId: 场景ID，必填   [in]				
 *@param uint32_t option: 功能选项，扩展选填   [in]				
 *@param OrganizationFilterPo filter: 过滤器，必填   [in]				
 *@param String inReserve: 请求保留字   [in]				
 *@param String errmsg: 错误信息  	[out]	
 *@param uint32_t total: 分支机构总数 	[out]	
 *@param Vector branch: 分支机构列表信息 	[out]	
 *@param String outReserve: 返回保留字   	[out]	
 *
 *@return  uint32_t : 0(成功) 其它失败
 *
 */
uint32_t COrganizationAo::FindBranch(
				const CCntlInfo& rCntlInfo,
				const std::string& strMachineKey,
				const std::string& strSource,
				uint32_t dwSceneId,
				uint32_t dwOption,
				const erp::organization::po::COrganizationFilterPo& oFilter,
				const std::string& strInReserve,
				std::string& strErrmsg,
				uint32_t& dwTotal,
				std::vector<erp::organization::po::CBranchPo >& vecBranch,
				std::string& strOutReserve
	)
{
	uint32_t dwRet = 0;
	//TODO:业务代码
	
	return dwRet;
}
